package IC.AST;

public class Interval 
{
	private int _min = -1, _max = 0;
	public Interval() {}
	public Interval(int a, int b)
	{
		_min = Min(a, b);
		_max = java.lang.Math.max(a, b);
	}
	public Interval(int a)
	{
		_min = _max = a;
	}
	
	public Interval(Interval i)
	{
		this(i._min, i._max);
	}
	
	public Interval(Interval a, Interval b)
	{
		_min = Min(a.GetMin(), b.GetMin());
		_max = java.lang.Math.max(a.GetMax(), b.GetMax());
	}
	
	public void Concatenate(Interval i)
	{
		_min = Min(_min, i.GetMin());
		_max = java.lang.Math.max(_max, i.GetMax());
	}
	
	public int GetMin() { return _min; }
	public int GetMax() { return _max; }
	
	private int Min(int a, int b)
	{
		if (a == -1)
			return b;
		if (b == -1)
			return a;
		return java.lang.Math.min(a, b);
	}
	
	public String toString()
	{
		if (_min == _max)
			return java.lang.Integer.toString(_min);
		return (java.lang.Integer.toString(_min) + "-" + java.lang.Integer.toString(_max));
	}
}
